/** @jsxImportSource @emotion/react */
import * as React from "react";
import {
    Button, TextArea, Text, useToast, InputLine, Input,
} from "customize-easy-ui-component";
import {InspectRecordLayout, InternalItemProps, useItemInputControl} from "../../common/base";
import {useMedia} from "use-media";
import {assertNamesUnique} from "../../common/eHelper";
import {EditStorageContext} from "../../StorageContext";
import {input额定是, display额定功率} from "../../boiler/rarelyVary";
import {itemA下结论} from "./ConclusionglRef";
import {config证书概况, } from "./CertificatePage";
export const input施联系人 = {
    edit:(inp:any,setInp:(a:any)=>void)=>{
        return <div><Text css={{fontSize:'0.7rem'}}>随后的5个录入是针对施工单位的：</Text>
            <InputLine  label={`联系人`}>
                <Input value={inp?.施联系人 || ''}
                       onChange={e => setInp({...inp, 施联系人: e.currentTarget.value})}/>
            </InputLine>
        </div>;
    },
};
//改造前 后多用台账录入。
export const config设备概况 = [
    [['锅炉型号', '_$型号'],  ['设备代码', '_$设备代码', ], ],
    [['产品编号', '_$出厂编号'], ['单位内编号','_$单位内部编号'], ],
    [['制造单位', '_$制造单位'], ['制造日期', '_$制造日期'] ],
    [['使用单位', '_$使用单位'], ['使用单位电话', '_$使用单位电话'], ],
    [['使用单位社会信用代码', '_$使用单位信用码'], ['联系人', '_$单位联系人'], ],
    [['使用登记证编号', '_$使用证号'], ['投入使用日期','_$投用日期']],
            //布局太紧凑， 删除 ?邮政编码；
    [['设备使用地点', '_$设备使用地点'] ],
    //orc?.额定蒸发量  .是功率
    [[display额定功率, '_$额定蒸发量', input额定是], ['锅筒工作压力',  '_$锅筒工作压力', 'MPa'],  ],
    //锅筒工作温度？ 台账没有等同的参数？  ['额定出口压力', '_$设计出口压力','MPa']
    [['过热蒸汽出口压力','_$过热器出口压', 'MPa'],  ['锅筒工作温度',{n:'筒工温', u:'℃'}, ], ],
    [['过热蒸汽出口温度','_$过热器出口温', '℃'],  ['再热蒸汽流量', '_$再热蒸汽流量','t/h'],  ],
    [['再热器进口压力','_$再热入口压力', 'MPa'],  ['再热器出口压力','_$再热出口压力', 'MPa'], ],
    [['再热器进口温度','_$再热入口温度', '℃'],  ['再热器出口温度','_$再热出口温度', '℃'],  ],
    [['给水温度','_$给水温度', '℃'], ['给水压力','_$给水压力', 'MPa'], ],
    // [['本次改造前的燃料', '_$燃料种类', ], ['本次改造前加热方式', '_$加热方式',],  ],
    [['燃料种类', '_$燃料种类',],  ['加热方式', '_$加热方式',], ],
    [['水循环方式', '_$水循环式',],  ['水处理方式', '_$水处理式',], ],

    [['施工单位', '施单位'], ['联系人', '施联系人', input施联系人], ],
    [['许可证编号', '施许可号'], ['联系电话', '施联电话'] ],
    [['许可有效期', {n:'施许可期',t:'d'}],  ['许可级别', {n:'施许级',t:'l',l:['A级', ]} ], ],
    [['检测单位', '检测单'], ['机构核准证编号', '检核证号'], ],
    [['施工范围',{n:'施工范围',t:'m'}] ],
    [['告知日期', {n:'告知日',t:'d'},],  ['告知书编号', '告书号' ] ],
    [['开工日期', {n:'开工日',t:'d'},],  ['竣工日期', {n:'竣工日',t:'d'},], ],
      //剩下的：放入下结论的编辑器。
];

/**在正式报告页面组件当中是可以用storage, setStorage来切换并保留操作状态值的。 但是不恰当：正式报告更可能仅仅是只能浏览读取的客户看的，区分客户身份？。
 * 【考虑】还是不要直接打印页面上编辑。 还是一样做分离式编辑操作。
 * */
export const EntranceSetup =
    React.forwardRef((
        {children, show, alone = true, repId, verId, rep}: InternalItemProps, ref
    ) => {
        const atPrint = useMedia('print');
        const toast = useToast();
        const doCheckNames = React.useCallback((verId: string) => {
            const result = assertNamesUnique([{value: rep?.tzFields},
                {value: config设备概况, type:'esnt'}, {value: config证书概况, type:'esnt'},
                {value:[...itemA下结论,  ]},
                {value:['Projects', ]}
                ]);
            toast({title: "完成！", subtitle: result ? "没发现冲突" : "测试开关没开", intent: "success"});
        }, [rep,toast]);
        const {storage, setStorage} =React.useContext(EditStorageContext) as any;
        const getInpFilter = React.useCallback((par: any) => {
            const {_tblFixed, } =par||{};
            return {_tblFixed, };
        }, []);
        const {inp, setInp} = useItemInputControl({ref});
        if (atPrint) return null;
        else return (
            <InspectRecordLayout inp={inp} setInp={setInp} getInpFilter={getInpFilter} show={show}
                                 alone={alone} label={'初始化本报告，默认值配置等'}>
                {process.env.REACT_APP_TEST==='true' && <><div>
                    <Text variant="h5">构建开发模板时的工具：校验模板的存储name冲突；</Text>
                    <Button intent='primary' onPress={() => doCheckNames(verId!)}>校验模板name唯一性</Button>
                    <Text variant="h5">设置待测试表格的各列宽度：</Text>
                    <TextArea value={storage?._tblFixed || ''} rows={2} onChange={e =>{
                        JSON.parse(e.currentTarget.value??'[]');
                        setStorage({ ...storage, _tblFixed: e.currentTarget.value || undefined}); }}/>
                </div></>
                }
                <hr/>
                <Button intent='primary' onPress={() => {
                    setStorage({ ...storage, _MlnDisplay: !storage?._MlnDisplay });
                }}>{storage?._MlnDisplay? '显示':'取消'}目录页</Button>
            </InspectRecordLayout>
        );
});
